#include <vector>
#include <cmath>
using namespace std;
#ifndef CALCULATIONKIT_H_
#define CALCULATIONKIT_H_

const float Me_MUL_C2 = 0.511*1e6;//eV
class Calculationkit
{
public:
    float calculateAverage(const vector<float>& data);
    float dot_product(float a[3], float b[3]);
    float module_length(float a[3]);
    void normalize_vector(float a[3]);
    void mul_vector(float a[3], float length);
    float angle_between_vectors(float a[3], float b[3]);
    // float smearing(float energy_actual, float energyRef, float resolution_at_Eref);
    float camp_calculate(float energy_elec, float energy_scatter);
    float calculate_angle_error(float e_vector[3], float electron_energy, float gamma_vector[3], float gamma_energy, float vector_actual[3]);
    float calculate_angle_error_y(float e_vector[3], float electron_energy, float gamma_vector[3], float gamma_energy, float vector_actual[3]);
    float calculate_distance_two_hits(float hit0[3], float hit1[3]);

};
#endif